home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / product.arc / ACAD2.LSP < prev    next >
Text File  |  1986-11-07  |  11KB  |  330 lines

  1. ;These are the functions in ACAD2.LSP:
  2. ;   1.  Rectangle at any angle (raa) 
  3. ;   2.  Spiral (spiral) 
  4. ;   3.  Clean Atomlist/Garbage Collection (kln) 
  5. ;   4.  Erase Last (EL) 
  6. ;   5.  Erase Window (EW) 
  7. ;   6.  Zoom Window (ZW) 
  8. ;   7.  Zoom Previous (ZP) 
  9. ;   8.  Draw Line (L) 
  10. ;   9.  Square at any angle (sq) 
  11. ;  10.  Convert Civil Units (conv) 
  12. ;  11.  Absolute scale of blocks (ascale) 
  13. ;  12.  Angled sequential numbers (an) 
  14. ;  13.  Slot (slot) 
  15. ;  14.  Change text style global (cs) 
  16. ;  15.  Extend (exd) 
  17. ;  16.  Step and Repeat (sr) 
  18. ;  17.  Flange (flange) 
  19. ;  18.  Parrallelogram  (paa) 
  20.  
  21. ;1.  Draws a rectangle at any angle. 
  22. (Defun C:Raa (/ P1 P2 P3 P4 A B) 
  23.        (Setvar "Cmdecho" 0) 
  24.        (Setq A (Getvar "Snapang")) 
  25.        (Setq B (Getvar "Orthomode")) 
  26.        (Setq P1 (Getpoint "\nFrom point: ")) 
  27.        (Setq P2 (Getpoint P1 "\nTo point: ")) 
  28.        (Command "Line" P1 P2 "") 
  29.        (Setvar "Snapang" (Angle P1 P2)) 
  30.        (Setvar "Orthomode" 1) 
  31.        (Setq P3 (Getpoint P2 "\nTo point: ")) 
  32.        (Setq P4 (Polar P3 (Angle P2 P1) (Distance P2 P1))) 
  33.        (Command "Line" P2 P3 P4 P1 "") 
  34.        (Setvar "Snapang" A) 
  35.        (Setvar "Orthomode" B) 
  36.  
  37. ;2.  Function for spiral. 
  38. (Defun Cspiral (NTIMES BPOINT CFAC LPPASS / ANG DIST TP AINC DINC
  39. CIRCLE BS CS) 
  40.        (Setq CS (Getvar "Cmdecho")) 
  41.        (Setq BS (Getvar "Blipmode")) 
  42.        (Setvar "Blipmode" 0) 
  43.        (Setvar "Cmdecho" 0) 
  44.        (Setq CIRCLE (* 3.141596235 2)) 
  45.        (Setq AINC (/ CIRCLE LPPASS)) 
  46.        (Setq DINC (/ CFAC LPPASS)) 
  47.        (Setq ANG 0.0) 
  48.        (Setq DIST 0.0) 
  49.        (Command "Pline" BPOINT) 
  50.        (Repeat NTIMES 
  51.                (Repeat LPPASS 
  52.                        (Setq TP (Polar BPOINT (Setq ANG (+ ANG
  53. AINC)) 
  54.                                 (Setq DIST (+ DIST DINC)))) 
  55.                        (Command TP) 
  56.                ) 
  57.        ) 
  58.        (Command) 
  59.        (Setvar "Blipmode" BS) 
  60.        (Setvar "Cmdecho" CS) 
  61.         nil 
  62.  
  63. ;   Interactive spiral generation. 
  64. (Defun C:Spiral (/ NT BP CF LP) 
  65.        (Prompt "\nCenter point: ") 
  66.        (Setq BP (Getpoint)) 
  67.        (Prompt "\nNumber of rotations: ") 
  68.        (Setq NT (Getint)) 
  69.        (Prompt "\nGrowth per rotation: ") 
  70.        (Setq CF (Getdist BP)) 
  71.        (Prompt "\nPoints per rotation: ") 
  72.        (Setq LP (Getint)) 
  73.        (Cond ((null LP) (Setq LP 30))) 
  74.        (Cspiral NT BP CF LP) 
  75.  
  76. ;3.  Cleans the atomlist, freeing node space 
  77. ;    and does a garbage collection. 
  78. (Defun C:Kln () 
  79.        (Setq ATOMLIST (Member 'INTERS ATOMLIST)) 
  80.        (GC) 
  81.  
  82. ;4.  Types "EL" to erase the last object. 
  83. (Defun C:EL () 
  84.        (Command "Erase" "L" "") 
  85.  
  86. ;5.  Types "EW" to erase a window. 
  87. (Defun C:EW () 
  88.        (Command "Erase" "W") 
  89.  
  90. ;6.  Types "ZW" to zoom a window. 
  91. (Defun C:ZW () 
  92.        (Command "Zoom" "W") 
  93.  
  94. ;7.  Types "ZP" to zoom previous. 
  95. (Defun C:ZP () 
  96.        (Command "Zoom" "P") 
  97.  
  98. ;8.  Types "L" to draw a line. 
  99. (Defun C:L () 
  100.        (Command "Line") 
  101.  
  102. :9.  Draws a a square at any angle. 
  103. (Defun C:Sq (/ P1 P2 P3 P4) 
  104.        (Setq P1 (Getpoint "\nLower left corner: ")) 
  105.        (Setq A (Getdist P1 "\nLength of one side: ")) 
  106.        (Setq P2 (Polar P1 0.0 A)) 
  107.        (Setq P3 (Polar P2 (/ Pi 2.0) A)) 
  108.        (Setq P4 (Polar P3 Pi A)) 
  109.        (Command "Line" P1 P2 P3 P4 "C") 
  110.  
  111. ;10.  Converts civil units (decimal feet)  
  112. ;     to architectural units (feet & inches). 
  113. (Defun C:Conv (/ A B C D E F G H) 
  114.        (Setq A (Getreal "Enter number to convert to feet and
  115. inches: ")) 
  116.        (Setq B (Fix A)) 
  117.        (Setq C (- A B)) 
  118.        (Setq C (* C 12)) 
  119.        (Setq D (Fix C)) 
  120.        (Setq C (- C D)) 
  121.        (If (>= C 0.9688) (Setq E (Chr 34))) 
  122.        (If (>= C 0.9688) (Setq D (+ D 1))) 
  123.        (If (>= D 12) (Setq B (+ B 1))) 
  124.        (If (>= D 12) (Setq D 0)) 
  125.        (If (< C 0.9688) (Setq E (Strcat "15/16" (Chr 34)))) 
  126.        (If (< C 0.9063) (Setq E (Strcat "7/8" (Chr 34)))) 
  127.        (If (< C 0.8438) (Setq E (Strcat "13/16" (Chr 34)))) 
  128.        (If (< C 0.7813) (Setq E (Strcat "3/4" (Chr 34)))) 
  129.        (If (< C 0.7188) (Setq E (Strcat "11/16" (Chr 34)))) 
  130.        (If (< C 0.6563) (Setq E (Strcat "5/8" (Chr 34)))) 
  131.        (If (< C 0.5938) (Setq E (Strcat "9/16" (Chr 34)))) 
  132.        (If (< C 0.5313) (Setq E (Strcat "1/2" (Chr 34)))) 
  133.        (If (< C 0.4688) (Setq E (Strcat "7/16" (Chr 34)))) 
  134.        (If (< C 0.4063) (Setq E (Strcat "3/8" (Chr 34)))) 
  135.        (If (< C 0.3438) (Setq E (Strcat "5/16" (Chr 34)))) 
  136.        (If (< C 0.2813) (Setq E (Strcat "1/4" (Chr 34)))) 
  137.        (If (< C 0.2188) (Setq E (Strcat "3/16" (Chr 34)))) 
  138.        (If (< C 0.1563) (Setq E (Strcat "1/8" (Chr 34)))) 
  139.        (If (< C 0.0938) (Setq E (Strcat "1/16" (Chr 34)))) 
  140.        (If (< C 0.0313) (Setq E (Chr 34))) 
  141.        (Setq F (itoa B)) 
  142.        (Setq G (itoa D)) 
  143.        (Setq H "Conversion from decimal to feet and inches is: ")
  144.  
  145.        (Strcat H F (chr 39) (chr 45) G (chr 32) E (chr 32) (chr
  146. 32)) 
  147.  
  148. ;11.  Absolute scale - allows easy rescaling of blocks 
  149. (Defun C:Ascale (/ A B C D E F G H) 
  150.        (Setq A (Ssget)) 
  151.        (Setq B (Sslength A)) 
  152.        (Setq C (Getreal "\nEnter new scale: ")) 
  153.        (While (> B 0) 
  154.               (Setq B (1- B)) 
  155.               (Setq D (Ssname A B)) 
  156.               (Setq D (Entget D)) 
  157.               (Setq E (Assoc 41 D)) 
  158.               (Setq F (Assoc 42 D)) 
  159.               (Setq G (Cons 41 C)) 
  160.               (Setq H (Cons 42 C)) 
  161.               (Setq D (Subst G E D)) 
  162.               (Entmod (Setq D (Subst H F D))) 
  163.        ) 
  164.  
  165. ;12.  Angled numbers. 
  166. (Defun C:An (/ P1 A1 A B C D E F G) 
  167.        (Setvar "Cmdecho" 0) 
  168.        (Setq G (Getvar "Blipmode")) 
  169.        (Setvar "Blipmode" 0) 
  170.        (Setq A (Getint "\nNumber to start with: ")) 
  171.        (Setq B (Getint "\nNumber to end with: ")) 
  172.        (Setq P1 (Getpoint "\nStarting point: ")) 
  173.        (Setq C (Getdist P1 "\nDistance between numbers: ")) 
  174.        (Setq A1 (Getangle P1 "\nAngle to run numbers: ")) 
  175.        (Setq D (Getdist P1 "\nText height: ")) 
  176.        (If (> A B) 
  177.            (Setq E -1) 
  178.            (Setq E 1) 
  179.        ) 
  180.        (Repeat (+ 1 (Abs (- A B))) 
  181.                (Setq F (Itoa A)) 
  182.                (Command "Text" "C" P1 D 0 F) 
  183.                (Setq A (+ A E)) 
  184.                (Setq P1 (Polar P1 A1 C)) 
  185.        ) 
  186.        (Setvar "Blipmode" G) 
  187.  
  188. ;13.  Draws a slot. 
  189. (Defun C:Slot (/ P1 A B C) 
  190.        (Setvar "Cmdecho" 0) 
  191.        (Setq P1 (Getpoint "\nInsertion point of slot: ")) 
  192.        (Setq A (Getdist P1 "\nRadius: ")) 
  193.        (Setq B (Getdist P1 "\nLength: ")) 
  194.        (Setq C (Getangle P1 "\nAngle: ")) 
  195.        (Command "Arc" "C" P1 (Polar P1 (+ (/ Pi 2) C) A) "A"
  196. "180") 
  197.        (Command "Line" "" (Polar (Getvar "Lastpoint") A B) "") 
  198.        (Command "Arc" "" (Polar (Getvar "Lastpoint") (+ (/ Pi 2)
  199. C) (* 2 A))) 
  200.        (Command "Line" "" (Polar (Getvar "Lastpoint") (+ Pi C) B)
  201. "") 
  202.  
  203. ;14.  Changes text styles 
  204. (Defun C:Cs (/ A B C D E) 
  205.        (Setvar "Cmdecho" 0) 
  206.        (Setq A (Getstring "\nOld Style Name: ")) 
  207.        (Setq B (Getstring "\nNew Style Name: ")) 
  208.        (Setq C (Entnext)) 
  209.        (While (Boundp 'C) 
  210.               (Setq D (Entget C)) 
  211.               (If (= (Cdr (Assoc 0 D)) "TEXT") 
  212.                   (Progn 
  213.                        (If (= (Cdr (Assoc 7 D)) A) 
  214.                            (Progn 
  215.                                 (Setq E (Assoc 7 D)) 
  216.                                 (Setq D (Subst (Cons 7 B) E D)) 
  217.                                 (Entmod D) 
  218.                            ) 
  219.                        ) 
  220.                   ) 
  221.               ) 
  222.               (Setq C (Entnext C)) 
  223.        ) 
  224.  
  225. ;15. Extends a line to a given distance
  226. (Defun C:exd (/ P1 P2 A B C D E) 
  227.        (Setvar "Cmdecho" 0) 
  228.        (Setq A (Getvar "Gridmode")) 
  229.        (Setq B (Getvar "Snapmode")) 
  230.        (Setq C (Getvar "Snapang")) 
  231.        (Setq E (Getvar "Orthomode")) 
  232.        (Setvar "Orthomode" 1) 
  233.        (Setq P2 (Osnap (Setq P1 (Osnap (Getpoint 
  234.                  "Touch line to change: ")"End"))"Mid")) 
  235.        (Setvar "Gridmode" 0) 
  236.        (Setvar "Snapmode" 0) 
  237.        (Setvar "Snapang" (Angle P2 P1)) 
  238.        (Setq D (Getdist P1 "How far: ")) 
  239.        (Command "Change" P1 "" (Polar P1 (Angle P2 P1) D)) 
  240.        (Setvar "Gridmode" A) (Setvar "Snapmode" B) 
  241.        (Setvar "Snapang" C)) 
  242.  
  243. ;16.  Step and Repeat 
  244. (Defun C:SR (/ P1 P2 A1 A B C D E BT CT) 
  245.        (Setvar "Cmdecho" 0) 
  246.        (Setq B (If (null B) "" B)) 
  247.        (Setq C (If (null C) 1.0 C)) 
  248.        (Setq P1 (Getpoint "\nFirst point: ")) 
  249.        (Setq P2 (Getpoint "\nSecond point: ")) 
  250.        (Setq A1 (Angle P1 P2)) 
  251.        (Setq A (Getint "\nNumber of items: ")) 
  252.        (Prompt "\nBlock name <") (Prompt B) 
  253.        (Setq BT (Getstring ">: ")) 
  254.        (Setq B (If (null BT) B BT)) 
  255.        (Prompt "\nScale factor <") 
  256.        (Prompt (Rtos C (Getvar "Lunits") (Getvar "Luprec"))) 
  257.        (Setq CT (Getreal ">: ")) 
  258.        (Setq C (If (null CT) C CT)) 
  259.        (Setq D (Getstring "\nRotate item <N>: ")) 
  260.        (Setq D (If (= D "y") "Y" "N")) 
  261.        (If (= D "Y") 
  262.            (Setq D (* (/ 180 Pi) A1)) 
  263.            (Setq D 0) 
  264.        ) 
  265.        (Setq E (Distance P1 P2)) 
  266.        (Setq E (/ E (- A 1))) 
  267.        (Repeat A 
  268.                (Command "Insert" B P1 C "" D) 
  269.                (Setq P1 (Polar P1 A1 E)) 
  270.        ) 
  271.  
  272. ;17.  Draws a flange 
  273. (Defun C:Flange () 
  274.        (Setvar "Cmdecho" 0) 
  275.        (Setq OR 0) (Setq IR 0) (Setq BC 0) 
  276.        (Setq P1 (Getpoint "\nEnter center of flange: ")) 
  277.        (Setq OR (Getdist P1 "\nOutside radius: ")) 
  278.        (Command "Circle" P1 OR) 
  279.        (Setq IR (Getdist P1 "\nInside radius: ")) 
  280.        (While (> IR OR) 
  281.        (Prompt "\nInside radius larger than outside: ") 
  282.        (Setq IR (Getdist P1 "\nInside radius: "))) 
  283.        (Command "Circle" P1 IR) 
  284.        (Setq bad 1) 
  285.        (While bad 
  286.        (Setq A nil) (Setq B nil) 
  287.        (Setq BC (Getdist P1 "Bolt circle radius: ")) 
  288.        (IF (> BC OR)  
  289.        (Prompt "\nBolt circle larger than O.D.: ") 
  290.        (setq a t)) 
  291.        (If (< BC IR)  
  292.        (Prompt "\nBolt circle smaller than I.D.: ") 
  293.        (Setq b t)) 
  294.        (if (and a b) (setq bad nil))) 
  295.        (Command "Circle" P1 BC) 
  296.        (Setq SH (Getreal "Bolt hole diameter: ")) 
  297.        (Setq NHI (Getint "Number of bolt holes: ")) 
  298.        (Setq NH (Float NHI)) 
  299.        (Setq SA (Getangle P1 
  300.        "Starting angle of first hole: ")) 
  301.        (Command "Circle" (Polar P1 SA BC) "D" SH) 
  302.        (Command "Array" "L" "" "C" P1 (/ 360 NH) NHI "")) 
  303.  
  304. ;18. Parrallelogram 
  305. (Defun C:PAA () 
  306.   (Setvar "Cmdecho" 0) 
  307.   (Setq P1 (Getpoint "\nFrom point: ")) 
  308.   (Setq P2 (Getpoint P1 "\nTo point: ")) 
  309.   (Command "Line" P1 P2 "") 
  310.   (Setq P3(Getpoint P2 "To point: ")) 
  311.   (Setq P4 (Polar P3 (Angle P2 P1) (Distance P2 P1))) 
  312.   (Command "Line" P2 P3 P4 P1 "") 
  313.